In printing documents from client computers and other devices to network printers, various printing protocols are used. Three such typical printing protocols employed include client-server printing, server-side-rendering (SSR) client-server printing, and peer-to-peer printing. These protocols are used by the various devices on the network to cause the printing of a particular document from the client. Such devices may include, for example, one or more clients, a queue server, a print server, and a printer, etc.
To print a document using client-server printing, for example, an application in a client first makes graphical device interface (GDI) calls to the operating system in the client. The operating system then creates enhanced meta file data (EMF data) from the GDI calls that are handed to a printer driver. The printer driver then renders the EMF data into printer ready bits (PRB) that form a print job. The print job is applied to the operating system to be transmitted over the network to the queue server for printing.
The queue server then receives the print job and places it in a queue associated with a particular printer. When the printer is ready to receive the print job, the queue server transmits the print job over the network to the print server. The print server then applies the print job to the printer for printing. Unfortunately, the client-server approach requires the entire document to be transmitted on the network twice, thereby consuming a potentially large amount of network bandwidth. This approach also consumes a considerable amount of queue server processing resources to receive, parse, spool (i.e., write to disk) and transmit the entire print job.
In server-side-rendering, (SSR) client-server printing, an application in a client first makes GDI calls to the operating system in the client. The operating system then creates EMF data from the GDI calls. The EMF data is transmitted over the network to a queue server. In the queue server, the EMF data is placed in a queue for printing. When the document is to be printed, the corresponding EMF data is applied to a printer driver in the queue server that renders the EMF data into printer ready bits (PRB) that form a print job. When the printer is ready to receive the print job, the print job is applied to the operating system in the queue server to be transmitted over the network to the print server for printing. The print server then applies the print job to the printer for printing. Unfortunately, the SSR client-server approach also requires the entire document to be transmitted on the network twice, once as EMF data and once as printer ready bits. This results in the consumption of a potentially large amount of network bandwidth. In addition, the centralization of the printer driver on the queue server can stress the computing capacity of the queue server even beyond that found in client-server printing in order to effectively render the EMF data into printer ready bits (PRB). This is especially a concern given that a number of printer drivers may be placed on the queue server to service a number of printers.
In peer-to-peer printing, an application in a client first makes GDI calls to the operating system in the client. The operating system then creates EMF data from the GDI calls that are handed to a printer driver in the client. The printer driver then renders the EMF data into printer ready bits (PRB) that form a print job. The print job is applied to the operating system in the client to be transmitted over the network directly to the print server for printing.
When the print server is ready to receive data, the operating system in the client transmits the print job to the print server. The print server then applies the printjob to the printer for printing. Although, the peer-to-peer printing approach only requires the entire document to be transmitted on the network once, the peer-to-peer approach does not facilitate centralized printer control, queuing or prioritizing print jobs, tracking printer or job statistics, and the like.